package com.tianqicode.spring.context.event;

import com.tianqicode.spring.context.ApplicationEvent;
import com.tianqicode.spring.context.ApplicationListener;

/**
 * 事件广播器, 负责管理所有监听者
 */
public interface ApplicationEventMulticaster {

    /**
     * 向通知列表中添加一个监听者
     */
    void addApplicationListener(ApplicationListener<?> listener);

    /**
     * 将监听者从通知列表中移除
     */
    void removeApplicationListener(ApplicationListener<?> listener);

    /**
     * 向监听者广播事件
     */
    void multicastEvent(ApplicationEvent event);
}
